home *** CD-ROM | disk | FTP | other *** search
/ Computer Shopper 242 / Issue 242 - April 2008 - DPCS0408DVD.ISO / Software Money Savers / VirtualDub / Source / VirtualDub-1.7.7-src.7z / src / helpfile / source / render.lina < prev    next >
Encoding:
Text File  |  2007-01-19  |  71.3 KB  |  1,550 lines

  1. <lina:create file="p-mainui.html" title="Processing: Main UI">
  2.     <blockquote>
  3.         <lina:image src="pics/p-mainui.png"/>
  4.     </blockquote>
  5.  
  6.     <dl>
  7.         <dt>Display panes</dt>
  8.         <dd>
  9.             <p>
  10.                 Two rectangular panes occupy most of VirtualDub's interface; the left one is the <em>input pane</em>
  11.                 and the right one is the <em>output pane</em>. As the current position is moved through the video,
  12.                 the panes will update with the original and filtered result of that frame. This allows convenient
  13.                 before-and-after comparisons of the video.
  14.             </p>
  15.             <p>
  16.                 The positioning and size of the display panes can be modified in a number of ways; see <a href="p-displays.html">Display panes</a>
  17.                 for more information.
  18.             </p>
  19.         </dd>
  20.  
  21.         <dt>Position slider</dt>
  22.         <dd>
  23.             <p>
  24.                 Drag the slider below the panes to change the current position within the video. If enabled, the display
  25.                 panes will update to show the selected frame. Holding Shift while dragging forces the current position
  26.                 to be placed only on key frames. Using the right mouse button to drag the slider instead of the left
  27.                 causes the drag to occur at a much slower rate for more precise positioning.
  28.             </p>
  29.             <p>    
  30.                 Each position on the position slider corresponds to the <i>start</i> of each frame in the video timeline.
  31.                 As a result, there is one additional position at the end corresponding to the end of the video. For
  32.                 instance, with a 2280 frame video the slider may be positioned from 0 to 2280.
  33.             </p>
  34.         </dd>
  35.  
  36.         <dt>Playback controls (<lina:image src="pics/p-mainui-playback.png"/>)</dt>
  37.         <dd>
  38.             Starts and stops preview playback of the video. The play button with the small "I" only plays the input video;
  39.             the one with the small "O" previews both the input and the filtered output video. Previewing the output
  40.             video requires a lot more CPU power and may not be able to occur in real-time if the video frame is
  41.             large or complex video filters are in use.
  42.         </dd>
  43.  
  44.         <dt>Frame step controls (<lina:image src="pics/p-mainui-framestep.png"/>)</dt>
  45.         <dd>
  46.             Jumps to the beginning, previous frame, next frame, and end of the video, respectively. These actions
  47.             can also be performed through the keyboard using Ctrl+Left-arrow, Left-arrow, Right-arrow, and Ctrl+Right-arrow.
  48.         </dd>
  49.  
  50.         <dt>Key frame step controls (<lina:image src="pics/p-mainui-keystep.png"/>)</dt>
  51.         <dd>
  52.             <p>
  53.                 Jumps to the previous or next <em>key frame</em> in the video. A <em>key frame</em> is a frame that is stored
  54.                 fully-contained in the video file and doesn't depend on any other frames for decoding; these are the fastest
  55.                 seek points in the video and often of slightly higher quality as well. Stepping by key frame is often significantly
  56.                 faster and is handy when browsing through the video. In addition, the key frames represent appropriate cut
  57.                 points when <a href="p-direct.html">editing in Direct mode</a>.
  58.             </p>
  59.             <p>
  60.                 The key frame step controls can also be activated through the keyboard using Shift+Left-arrow and Shift+Right-arrow.
  61.             </p>
  62.             <p>
  63.                 When the video source is an MPEG-1 file, the key frame step controls jump between I-frames.
  64.             </p>
  65.         </dd>
  66.  
  67.         <dt>Scene step controls (<lina:image src="pics/p-mainui-scenestep.png"/>)</dt>
  68.         <dd>
  69.             <p>
  70.                 Jumps to the previous or next scene in the video. Scene detection is done by image analysis heuristics, by looking
  71.                 for large picture changes that indicate possible cuts or fades in the video. The thresholds for determining a fade
  72.                 or a cut can be controlled in the Preferences dialog.
  73.             </p>
  74.             <p>
  75.                 When scanning through a large amount of video, the display panes will begin to update at a slower rate. This is normal.
  76.                 The pane updates are reduced after a short period in order to reduce their CPU usage and speed up the scan.
  77.             </p>
  78.         </dd>
  79.  
  80.         <dt>Mark-in and mark-out controls (<lina:image src="pics/p-mainui-mark.png"/>)</dt>
  81.         <dd>
  82.             <p>
  83.                 Sets the starting and ending points for the selection to the current position. The selection is used by the commands
  84.                 in the Edit menu to modify the portions of video to be rendered. Also, if a portion of video is selected when a save command
  85.                 is used, only that portion of video is processed.
  86.             </p>
  87.             <p>
  88.                 The Home and End keys can also be used to select video.
  89.             </p>
  90.             <lina:note>
  91.                 Since the position slider moves to the <i>beginning</i> of frames, the mark-out point must be placed one frame <em>after</em>
  92.                 the last frame to be selected. This means that if 300 frames are to be deleted starting at frame 100, the selection should
  93.                 be started (mark-in) at frame 100 and ended (mark-out) at frame 100+300 = 400, not at frame 399. This is referred to as
  94.                 <em>end-point exclusive</em> selection.
  95.             </lina:note>
  96.         </dd>
  97.  
  98.         <dt>Timestamp display (<lina:image src="pics/p-mainui-timestamp.png"/>)</dt>
  99.         <dd>
  100.             <p>
  101.                 Displays the current frame number, timestamp, and frame type at the current position. Frame types are as follows:
  102.             </p>
  103.             <ul>
  104.                 <li><tt>[K]</tt>: A key frame. (AVI)</li>
  105.                 <li><tt>[ ]</tt>: A delta frame — stored as a difference from the previous frame. (AVI)</li>
  106.                 <li><tt>[D]</tt>: A drop or null frame, which repeats the previous frame. These are most often found in capture files. (AVI)</li>
  107.                 <li><tt>[I]</tt>: An I-frame; similar to a key frame. (MPEG-1)</li>
  108.                 <li><tt>[P]</tt>: A P-frame, or <i>forward predicted</i> frame. These are stored as a difference from an earlier frame. (MPEG-1)</li>
  109.                 <li><tt>[B]</tt>: A B-frame, or <i>bidirectionally predicted</i> frame. These are stored as a difference from both an earlier frame and a future frame. (MPEG-1)</li>
  110.                 <li><tt>[M]</tt>: A masked frame. These are frames that have been tagged in VirtualDub's timeline as not to be processed; instead, the previous frame should be
  111.                     used. This is most often used to bypass errors in the source. The end frame will also show up as one of these.</li>
  112.             </ul>
  113.             <p>
  114.                 The format of the timestamp display can be customized in Preferences.
  115.             </p>
  116.         </dd>
  117.     </dl>
  118. </lina:create>
  119.  
  120. <lina:create file="p-edit.html" title="Processing: Editing the source video">
  121.     <p>
  122.         Although VirtualDub is not a full non-linear editing (NLE) application, it does have some limited
  123.         functionality for editing source video. Unwanted portions of video can thus be trimmed off from
  124.         a video before it is processed, saving disk space and time.
  125.     </p>
  126.     <h2>Selecting and editing portions of the timeline</h2>
  127.     <p>
  128.         Use the <em>Edit > Set selection start</em> and <em>Edit > Set selection end</em> commands to select
  129.         a portion of video. This can also be done through the Home and End keys on the keyboard, or through
  130.         the mark-in and mark-out buttons below the position slider. The current selection is then indicated by
  131.         a sky-blue area on the position slider.
  132.     </p>
  133.     <p>
  134.         Once a portion of video has been selected, the <em>Delete</em> command (keyboard shortcut: Delete key) can
  135.         be used to remove that video from the timeline. The <em>Cut</em>, <em>Copy</em>, and <em>Paste</em> commands
  136.         can also be used to reorder video (they cannot be used to splice or combine video files together, however).
  137.         The <em>Undo/Redo</em> commands can be used to reverse mistakes, and the <em>Reset timeline</em> command
  138.         undoes all edits entirely, restoring the timeline to the entirety of the source video.
  139.     </p>
  140.     <p>
  141.         Editing the timeline only creates an edit list within VirtualDub for later use; it never modifies
  142.         the source file in any way. In particular, deleting a section of the timeline does not delete anything
  143.         from the source file, and the edited result must be saved to a new file. Editing a video file thus requires
  144.         disk space to hold both the original and the edited clip.
  145.     </p>
  146.     <p>
  147.         As a shortcut, the selection mark-in/mark-out commands also modify the range selection that is exposed via
  148.         the <em>Video > Select range...</em> menu command. Thus, selecting a portion of video prior to a save
  149.         command causes only that selection to be rendered to disk. If this is undesired, clear the selection using
  150.         the <em>Edit > Clear selection (Ctrl+D)</em> command.
  151.     </p>
  152.     <h2>Caveats when editing</h2>
  153.     <p>
  154.         VirtualDub does not have support for transitions, so any edits will be abrupt unless the edit points are
  155.         located at places in the source video that hide the seam. Silent fades to black are a good place to
  156.         remove selections of video.
  157.     </p>
  158.     <p>
  159.         Editing can be performed in any video or audio mode, including Direct mode, which causes the render-to-disk
  160.         to be extremely fast and without quality loss in most cases. However, there are serious limitations with
  161.         editing in this mode that restrict where edits can be performed; also, advanced audio and video compression
  162.         can impede VirtualDub's ability to edit cleanly. For more information, see <a href="p-direct.html">Direct mode</a>.
  163.     </p>
  164.     <h2>Masking frames</h2>
  165.     <p>
  166.         A single frame or section of frames can be <i>masked</i>; this prevents the imagery from those frames
  167.         from being used and instead forces reuse of the image of the last unmasked frame. In Direct mode,
  168.         the masked frame data is deleted entirely and empty padding frames are written instead. However, in
  169.         either case the audio is untouched, so the video simply appears to freeze for the duration of the
  170.         masked range. This can be used either to remove single-frame glitches or to remove compressed frames
  171.         that are damaged.
  172.     </p>
  173.     <p>
  174.         Note that similar restrictions apply to masked frames as to deleted frames with regard to masking frames
  175.         that are not key frames, and VirtualDub will similarly fix masked ranges that cannot be supported
  176.         in Direct mode.
  177.     </p>
  178. </lina:create>
  179.  
  180. <lina:create file="p-render.html" title="Processing: Rendering and saving the processed output">
  181.     <p>
  182.         Once the source video has been edited as necessary and appropriate processing parameters set, the
  183.         video can be <em>rendered</em> to generate the final result. This can either be previewed live or saved
  184.         to a file on disk.
  185.     </p>
  186.     <h2>Previewing the edited result</h2>
  187.     <p>
  188.         The <em>File > Preview output from start...</em> command begins rendering the timeline to the video
  189.         display so that it can be previewed. Most video and audio processing operations are active in this mode,
  190.         with the notable exception of audio and video compression, which are disabled. The result that is seen
  191.         in the output display pane and heard from the system speakers is thus representative of the output of
  192.         the video and audio filter systems, but may be of higher quality than what would be stored in compressed
  193.         form.
  194.     </p>
  195.     <p>
  196.         Rendering filtered audio and video in real-time consumes a lot of CPU power and in many cases VirtualDub
  197.         will have difficulty attaining full frame rate given a complex filter chain. When this occurs, the audio
  198.         may lose sync and begin to stutter as the video frame rate drops below real-time, since all video frames
  199.         are still displayed. The <em>Option > Drop video frames when behind</em> option can help here by allowing
  200.         VirtualDub to process only a portion of the video frames in order to maintain real-time performance.
  201.         This only affects preview and does not remove frames during any save-to-disk operation.
  202.         Note that this may not be sufficient in extreme cases where the audio chain or the hard disk is unable
  203.         to attain real-time either.
  204.     </p>
  205.     <p>
  206.         The <em>Sync to audio</em> option also affects preview by changing the way that VirtualDub synchronizes
  207.         audio and video playback; it should normally be left on, but if there are problems with audio timing
  208.         that prevent synchronized playback from occurring, disabling this option may allow preview to proceed.
  209.         Like the option to drop frames, this option too only pertains to previewing and does not affect renders
  210.         to disk.
  211.     </p>
  212.     <h2>Saving the processed result to disk</h2>
  213.     <p>
  214.         <em>File > Save AVI...</em> starts a render process to disk. A new AVI file is then generated containing
  215.         the processed video and audio.
  216.     </p>
  217.     <p>
  218.         VirtualDub is normally able to write AVI files larger than 2GB using a extension to the AVI file format
  219.         called the <em>OpenDML hierarchical index</em>. This is done in such a way that older applications that
  220.         do not understand the hierarchical index can still open the first 2GB of the file. However, occasionally
  221.         an application cannot open such AVI files at all. The <em>File > Save old format AVI</em> command
  222.         disables VirtualDub's use of that extension so that only an original-format AVI is written. Note that
  223.         this format does not support AVI files larger than 2GB, so care must be taken to appropriately trim or
  224.         compress the video to fit below this threshold.
  225.     </p>
  226.     <p>
  227.         If only the audio is desired, the <em>File > Save WAV...</em> menu option produces an audio file on
  228.         disk using the WAV format. All audio options are active, except for the interleaving interval, which
  229.         does not apply since no video is being written. Video is not processed in this mode. Note that audio
  230.         compression <i>is</i> active since WAV files can either be compressed or uncompressed, so be sure to
  231.         disable audio compression if an uncompressed WAV file is desired.
  232.     </p>
  233.     <p>
  234.         Although VirtualDub can read MPEG-1 files, it is not currently able to write them, even in Direct mode.
  235.     </p>
  236.     <h2>Analysis passes</h2>
  237.     <p>
  238.         Some video filters and video codecs may require <i>analysis passes</i> in order to effectively filter or
  239.         compress video. In the analysis passes, the video is scanned to determine difficult areas of motion or
  240.         other features; knowledge of the <i>entire</i> video can then be used to optimize the final output.
  241.         This is known as <em>multi-pass</em> processing.
  242.     </p>
  243.     <p>
  244.         For various reasons, VirtualDub does not know that a multi-pass operation is required by a video filter
  245.         or codec and cannot automate the process. However, the <em>File > Run video analysis pass</em>
  246.         assists in running analysis passes by running the video pipeline without writing a dummy file to disk.
  247.         The audio pipeline is disabled as well for additional speed.
  248.     </p>
  249. </lina:create>
  250.  
  251. <lina:create file="p-pipeline.html" title="Processing: The pipeline">
  252.     <style>
  253.         table.pipeline {
  254.         }
  255.  
  256.         table.pipeline th {
  257.             background: #8ae;
  258.         }
  259.  
  260.         table.pipeline td {
  261.             background: #aea;
  262.         }
  263.     </style>
  264.  
  265.     <p>
  266.         VirtualDub's processing of audio and video during a render-to-disk operation is split into several pipeline stages.
  267.         Some of these stages are enabled or disabled depending on the current audio/video mode selected.
  268.     </p>
  269.  
  270.     <h2>Video pipeline</h2>
  271.     <p>
  272.         The video pipeline can be run in one of four different modes:
  273.     </p>
  274.     <ul>
  275.         <li>
  276.             <p>
  277.                 <em>Direct stream copy</em>: In this mode, video frames are copied directly from input to output. No
  278.                 recompression takes place, and thus no quality loss can occur. This is the fastest possible mode for
  279.                 editing video in VirtualDub.
  280.             </p>
  281.             <p>
  282.                 Because the video is not recompressed, video compression imposes restrictions on how the video can
  283.                 be edited.
  284.             </p>
  285.         </li>
  286.         <li>
  287.             <p>
  288.                 <em>Fast recompress</em>: Video is decompressed and then recompressed using the desired output codec.
  289.                 VirtualDub automatically chooses a intermediate video format to use between the codecs for quality
  290.                 and speed.
  291.             </p>
  292.             <p>
  293.                 An output video codec must be chosen in this mode.
  294.             </p>
  295.         </li>
  296.         <li>
  297.             <p>
  298.                 <em>Slow recompress</em>: Video is decompressed and then recompressed using the desired output codec.
  299.                 This is similar to Fast Recompress except that the input and output formats can be chosen
  300.                 in the <a href="d-videocolordepth.html">Video color depth</a> dialog, and the two can be different,
  301.                 requiring a conversion in between.
  302.             </p>
  303.             <p>
  304.                 If no output video codec is chosen, the video is written to disk uncompressed in the output format.
  305.             </p>
  306.         </li>
  307.         <li>
  308.             <p>
  309.                 <em>Full processing mode</em>: All pipeline stages and features are enabled.
  310.             </p>
  311.         </li>
  312.     </ul>
  313.     <p>
  314.         Here's what the video pipeline looks like:
  315.     </p>
  316.  
  317.     <blockquote>
  318.         <table class="pipeline">
  319.             <tr>
  320.                 <th>Direct</th>
  321.                 <th>Recompress</th>
  322.                 <th>Full</th>
  323.             </tr>
  324.             <tr>
  325.                 <td>Frame sequencing</td>
  326.             </tr>
  327.             <tr>
  328.                 <td>Read frame</td>
  329.             </tr>
  330.             <tr>
  331.                 <td rowspan="6"></td>
  332.                 <td>Decompress frame</td>
  333.             </tr>
  334.             <tr>
  335.                 <td rowspan="3"></td>
  336.                 <td>Inverse telecine</td>
  337.             </tr>
  338.             <tr>
  339.                 <td>Convert to 32-bit RGB</td>
  340.             </tr>
  341.             <tr>
  342.                 <td>Run video filters</td>
  343.             </tr>
  344.             <tr>
  345.                 <td>Convert to target format</td>
  346.             </tr>
  347.             <tr>
  348.                 <td>Compress frame</td>
  349.             </tr>
  350.             <tr>
  351.                 <td>Write video</td>
  352.             </tr>
  353.         </table>
  354.     </blockquote>
  355.     <p>
  356.         Here's what the various stages do:
  357.     </p>
  358.     <dl>
  359.         <dt>Frame sequencing</dt>
  360.         <dd>
  361.             <p>
  362.                 Video frames are selected from sources and ordered. This is where any edits done to the timeline take place,
  363.                 along with the frame rate options, including rate adjustment, conversion, and decimation.
  364.             </p>
  365.             <p>
  366.                 If Direct mode is selected, there are some restrictions as to how frames can be inserted or dropped. Any edits
  367.                 to the timeline that violate these restrictions are adjusted here to comply.
  368.             </p>
  369.         </dd>
  370.  
  371.         <dt>Read frame</dt>
  372.         <dd>
  373.             <p>
  374.                 Video frames are read from disk.
  375.             </p>
  376.         </dd>
  377.  
  378.         <dt>Decompress frame</dt>
  379.         <dd>
  380.             <p>
  381.                 Compressed video frames are run through a video codec to produce uncompressed video frames. The format is
  382.                 selected in the <a href="d-videocolordepth.html">Video color depth</a> dialog.
  383.             </p>
  384.             <p>
  385.                 In Fast Recompress mode, the format is automatically selected based on compatibility between the input and
  386.                 output video codecs.
  387.             </p>
  388.             <p>
  389.                 By default, any empty ("dropped") frames in the input are simply duplicated here. This behavior can be
  390.                 changed through the <em>Video > Preserve empty frames</em> option, which causes each empty frame to
  391.                 be copied straight to the output, regardless of the video filter chain or output codec. This can be useful
  392.                 if the video stream has been upsampled to a higher frame rate using empty frames.
  393.             </p>
  394.         </dd>
  395.  
  396.         <dt>Inverse telecine</dt>
  397.         <dd>
  398.             <p>
  399.                 If inverse telecine (3:2 pulldown removal) is enabled in <a href="d-videoframerate.html">Video frame rate
  400.                 control</a>, fields are reordered and the video stream frame rate is reduced by 25% at this point.
  401.             </p>
  402.         </dd>
  403.  
  404.         <dt>Convert to 32-bit RGB</dt>
  405.         <dd>
  406.             <p>
  407.                 Video filters in VirtualDub currently only run in 32-bit RGB, so the video frames are converted to 32-bit
  408.                 RGB at this point.
  409.             </p>
  410.             <lina:note>
  411.                 In previous versions of VirtualDub, enabling full processing mode would always force a conversion to 32-bit
  412.                 RGB. This is no longer the case — if no video filters are used, this conversion step is omitted
  413.                 and the video is directly converted to the output format as in Slow Recompress mode.
  414.             </lina:note>
  415.         </dd>
  416.  
  417.         <dt>Run video filters</dt>
  418.         <dd>
  419.             <p>All <a href="d-videofilters.html">video filters</a> are run at this point.</p>
  420.         </dd>
  421.  
  422.         <dt>Convert to output format</dt>
  423.         <dd>
  424.             <p>
  425.                 The video frames are converted from their current format to the output format specified
  426.                 in the <a href="d-videocolordepth.html">Video color depth</a> dialog. If the formats are the same,
  427.                 no conversion takes place.
  428.             </p>
  429.             <p>
  430.                 Conversions between YCbCr formats are done directly in YCbCr space without an RGB intermediate step.
  431.                 Chroma is subsampled or supersampled as necessary using bilinear filtering.
  432.             </p>
  433.         </dd>
  434.  
  435.         <dt>Compress frame</dt>
  436.         <dd>
  437.             <p>
  438.                 If a <a href="d-videocompression.html">video compression codec is selected</a>, it is now used to
  439.                 compress the video frame.
  440.             </p>
  441.         </dd>
  442.  
  443.         <dt>Write video</dt>
  444.         <dd>
  445.             <p>
  446.                 The video frame is now written to disk.
  447.             </p>
  448.         </dd>
  449.     </dl>
  450.  
  451.     <h2>Audio pipeline</h2>
  452.     <p>
  453.         The audio pipeline has three modes: Direct, Full without audio filters, and Full with audio filters. Enabling audio filters
  454.         replaces other types of audio processing in the pipeline, thus the parallel path.
  455.     </p>
  456.  
  457.     <blockquote>
  458.         <table class="pipeline">
  459.             <tr>
  460.                 <th>Direct</th>
  461.                 <th colspan="2">Full</th>
  462.             </tr>
  463.             <tr>
  464.                 <td>Sequencing</td>
  465.             </tr>
  466.             <tr>
  467.                 <td>Read audio</td>
  468.             </tr>
  469.             <tr>
  470.                 <td rowspan="5"></td>
  471.                 <td>Decompress audio</td>
  472.             </tr>
  473.             <tr>
  474.                 <td>Format conversion</td>
  475.                 <td rowspan="3">Filter graph</td>
  476.             </tr>
  477.             <tr>
  478.                 <td>Resampling</td>
  479.             </tr>
  480.             <tr>
  481.                 <td>Volume adjustment</td>
  482.             </tr>
  483.             <tr>
  484.                 <td>Compression</td>
  485.             </tr>
  486.             <tr>
  487.                 <td>Write audio</td>
  488.             </tr>
  489.         </table>
  490.     </blockquote>
  491.  
  492.     <dl>
  493.         <dt>Sequencing</dt>
  494.         <dd>
  495.             Any audio edits take place here. These are basically the same in time as the video edits.
  496.         </dd>
  497.  
  498.         <dt>Read audio</dt>
  499.         <dd>
  500.             Source audio is read from disk.
  501.         </dd>
  502.  
  503.         <dt>Decompress audio</dt>
  504.         <dd>
  505.             Audio is decompressed using an audio codec, if necessary, producing uncompressed PCM audio. This is usually in
  506.             16-bit mono or 16-bit stereo format.
  507.         </dd>
  508.  
  509.         <dt>Format conversion</dt>
  510.         <dd>
  511.             Precision and channel changes requested under <a href="d-audioconversion.html">audio conversion</a> now take
  512.             place, including switching between 8-bit and 16-bit samples, as
  513.             well as mixing down to mono or cloning channels to produce stereo.
  514.         </dd>
  515.  
  516.         <dt>Resampling</dt>
  517.         <dd>
  518.             <p>
  519.                 Changes in sampling rate requested in the <a href="d-audioconversion.html">audio conversion dialog</a> now take
  520.                 place. If high quality mode is off, point sampling is used, otherwise linear interpolation is used.
  521.             </p>
  522.             <p>
  523.                 If higher quality resampling is required, the resample audio filter should be used instead, which uses a multi-tap
  524.                 windowed sinc filter.
  525.             </p>
  526.         </dd>
  527.  
  528.         <dt>Volume adjustment</dt>
  529.         <dd>
  530.             <p>
  531.                 If volume adjustment is enabled, the audio is now attenuated or amplified using a linear multiplication with
  532.                 clamping.
  533.             </p>
  534.         </dd>
  535.  
  536.         <dt>Compression</dt>
  537.         <dd>
  538.             <p>
  539.                 The audio is now recompressed using the selected output audio codec. If no audio codec is selected,
  540.                 the audio is simply written out using its current format.
  541.             </p>
  542.         </dd>
  543.  
  544.         <dt>Write audio</dt>
  545.         <dd>
  546.             <p>
  547.                 The finished audio is written to disk.
  548.             </p>
  549.         </dd>
  550.     </dl>
  551.  
  552. </lina:create>
  553.  
  554. <lina:create file="p-direct.html" title="Processing: Direct mode">
  555.     <p>
  556.         VirtualDub allows audio and video streams to be processed in <em>direct mode</em>. In this mode, data is simply
  557.         copied from input and output. This has the advantage of much faster rendering and no quality loss, while still
  558.         allowing a limited amount of editing.
  559.     </p>
  560.     <p>
  561.         Because of the way that audio and video compression works, there are some limitations imposed on the types and
  562.         locations of edits that can be done in direct mode. However, because audio and video modes are independent, it
  563.         is possible to have only one pipeline run in direct mode, and not incur the limitations that would be imposed
  564.         by the other.
  565.     </p>
  566.     <h2>Limitations on editing compressed video streams</h2>
  567.     <p>
  568.         Video compression imposes severe restrictions on where edits can occur in the video stream in direct mode.
  569.         Most compression occurs by removing redundant data between adjacent frames, which results in a <em>delta frame</em>
  570.         that is dependant on the previous frame to be decoded properly. The result is that the previous frame can't
  571.         be removed without making that delta frame undecodable. Frames which aren't dependant on the previous frame
  572.         are known as <em>key frames</em> and serve as anchor points in the stream for seeking and editing purposes.
  573.     </p>
  574.     <p>
  575.         The rule that must be heeded when editing a direct mode stream in VirtualDub is that <em>a portion of video to
  576.         be removed must end on a keyframe</em>.
  577.     </p>
  578.     <p>
  579.         Key frames are denoted by <tt>[K]</tt> next to the timestamp below the seek bar in VirtualDub; delta frames
  580.         are denoted by <tt>[ ]</tt> instead. Because selections in VirtualDub are <em>endpoint exclusive</em> —
  581.         meaning that the frame you end the selection on is not included in the selection — you want to <em>end the
  582.         selection on a key frame</em>.
  583.     </p>
  584.     <style>
  585.         table.timeline {
  586.             margin-left: 32px;
  587.         }
  588.  
  589.         table.timeline th {
  590.             background: #8ae;
  591.         }
  592.  
  593.         table.timeline td {
  594.             background: #aea;
  595.             padding-right: 16px
  596.         }
  597.  
  598.         table.timeline td.cut {
  599.             background: #a88;
  600.         }
  601.         table.timeline td.broken {
  602.             background: #f00;
  603.         }
  604.     </style>
  605.     <p>
  606.         As an example, assume that you have a set of frames like this:
  607.     </p>
  608.     <table class="timeline"><tr>
  609.         <td>K</td>
  610.         <td> </td>
  611.         <td> </td>
  612.         <td> </td>
  613.         <td> </td>
  614.         <td>K</td>
  615.         <td> </td>
  616.         <td> </td>
  617.         <td> </td>
  618.         <td> </td>
  619.         <td>K</td>
  620.         <td> </td>
  621.         <td> </td>
  622.         <td> </td>
  623.         <td> </td>
  624.     </tr></table>
  625.     <p>
  626.         This cut is <i>kosher</i>:
  627.     </p>
  628.     <table class="timeline"><tr>
  629.         <td>K</td>
  630.         <td> </td>
  631.         <td> </td>
  632.         <td class="cut"> </td>
  633.         <td class="cut"> </td>
  634.         <td class="cut">K</td>
  635.         <td class="cut"> </td>
  636.         <td class="cut"> </td>
  637.         <td class="cut"> </td>
  638.         <td class="cut"> </td>
  639.         <td>K</td>
  640.         <td> </td>
  641.         <td> </td>
  642.         <td> </td>
  643.         <td> </td>
  644.     </tr></table>
  645.     <p>
  646.         This cut, however, is not, because it leaves a delta frame that is missing its predecessor:
  647.     </p>
  648.     <table class="timeline"><tr>
  649.         <td>K</td>
  650.         <td> </td>
  651.         <td> </td>
  652.         <td> </td>
  653.         <td> </td>
  654.         <td class="cut">K</td>
  655.         <td class="cut"> </td>
  656.         <td class="cut"> </td>
  657.         <td class="cut"> </td>
  658.         <td class="cut"> </td>
  659.         <td class="cut">K</td>
  660.         <td class="cut"> </td>
  661.         <td class="broken"> </td>
  662.         <td> </td>
  663.         <td> </td>
  664.     </tr></table>
  665.     <p>
  666.         When such a cut is made, VirtualDub automatically adjusts the cut ranges until the restrictions of delta frame
  667.         compression are satisfied. Thus, the above cut would actually give the following:
  668.     </p>
  669.     <table class="timeline"><tr>
  670.         <td>K</td>
  671.         <td> </td>
  672.         <td> </td>
  673.         <td> </td>
  674.         <td> </td>
  675.         <td class="cut">K</td>
  676.         <td class="cut"> </td>
  677.         <td class="cut"> </td>
  678.         <td class="cut"> </td>
  679.         <td class="cut"> </td>
  680.         <td>K</td>
  681.         <td> </td>
  682.         <td> </td>
  683.         <td> </td>
  684.         <td> </td>
  685.     </tr></table>
  686.     <p>
  687.         The rules for such automatic corrections:
  688.     </p>
  689.     <ul>
  690.         <li>VirtualDub will not let you write a video stream with dangling delta frames.</li>
  691.         <li>Frames are always added back in, but never removed, duplicated or reordered.</li>
  692.     </ul>
  693.     <p>
  694.         Thus, if you make a mistake, you can always load in the edited file and <em>re-edit</em> in direct mode, making a larger cut that satisfies
  695.         the rules.
  696.     </p>
  697.     <p>
  698.         The same restrictions apply to masking frames as to deleting frames; if an unmasked delta frame exists
  699.         after a masked frame, the masked frame will be converted to unmasked before the operation begins.
  700.     </p>
  701.     <p>
  702.         A <em>null frame</em> or <em>drop frame</em>, which is a zero-byte frame that simply duplicates the previous frame,
  703.         has special handling in VirtualDub's pipeline. These are denoted by <tt>[D]</tt> next to the timestamp indicator and
  704.         are occasionally produced during video capture.
  705.         Such frames are dependant upon the previous frame, but can still be removed without affecting decoding. Note that
  706.         these frames occupy time in the stream, however, and so deleting them will remove the corresponding audio segment
  707.         as well.
  708.     </p>
  709.     <p>
  710.         It is sometimes possible to bypass the restrictions on cut positions by using <a href="p-smartrendering.html">smart rendering</a>.
  711.     </p>
  712.     <h2>Video frame decimation/conversion in direct mode</h2>
  713.     <p>
  714.         The frame rate decimation and conversion modes resample a video stream by inserting or removing frames. This essentially
  715.         involves micro-editing of the stream at the frame level and suffers from similar limitations with compressed streams.
  716.         Here are the frame rate limitations when using direct mode:
  717.     </p>
  718.     <ul>
  719.         <li>
  720.             <em>Frame rate adjustment</em> simply tweaks the frame rate of the video stream and can be used without limitation.
  721.         </li>
  722.         <li>
  723.             <em>Conversion to a higher rate</em> works by inserting zero-byte null frames into the output stream, and can also
  724.             be used without limitation. (This means you can convert a 30fps stream to 120fps with no loss and with almost no
  725.             size increase.)
  726.         </li>
  727.         <li>
  728.             <em>Conversion to a lower rate</em> has to delete frames, but suffers from the limitation on dependant frame removal.
  729.             If used on a compressed stream, the option is only able to remove frames immediately before a key frame, which means
  730.             that sequences of delta frames are longer than a few frames, the video will stutter and audio sync will be affected.
  731.             Conversion to a lower rate is thus only usable with a stream that has few or no delta frames.
  732.         </li>
  733.         <li>
  734.             <em>Decimation</em> is equivalent to conversion to a 1/N frame rate and has the same issues.
  735.         </li>
  736.     </ul>
  737.     <p>
  738.         As with edits, null frames also receive special treatment here, so if a video has been upsampled from 30fps to 120fps
  739.         by inserting null frames, conversion can be used to discard the null frames and drop the stream back to 30fps.
  740.     </p>
  741.     <h2>Video streams that are direct-mode friendly</h2>
  742.     <p>
  743.         A video stream using a format that only uses key frames imposes no limitations on the location
  744.         of cuts in direct mode. Such formats include:
  745.     </p>
  746.     <ul>
  747.         <li>Any uncompresed RGB or paletted format</li>
  748.         <li>Any uncompressed YCbCr format (UYVY, YUY2, YV12, I420, etc.)</li>
  749.         <li>Video compression that only uses key frames, such as Huffyuv, Motion JPEG, or DV.</li>
  750.     </ul>
  751.     <p>
  752.         These formats are thus very friendly to direct-mode editing and are good choices for capture or intermediate
  753.         video files.
  754.     </p>
  755.     <h2>Limitations on direct-mode imposed by source format</h2>
  756.     <p>
  757.         MPEG-1 video streams cannot be copied in direct mode, because MPEG-1 video compression is incompatible with the
  758.         AVI file format. Also, MPEG-1 audio streams are always decompressed to raw PCM regardless of the audio mode setting.
  759.     </p>
  760.     <p>
  761.         DV files that use interleaved storage (type-1 DV AVI) may have their audio streams slightly modified when
  762.         processing the audio stream in direct mode, because VirtualDub has to resample the audio stream in some cases
  763.         to force a consistent audio sample rate. This is not a problem for AVIs that have the DV data split into
  764.         traditional audio and video streams (type-2).
  765.     </p>
  766.     <h2>Limitations on editing imposed by audio compression</h2>
  767.     <p>
  768.         Audio compression works by processing blocks of audio as individual units. In direct mode, VirtualDub copies these
  769.         blocks as atomic units, so the length of time corresponding to the block sets the minimum granularity for edits, and
  770.         thus the accuracy of edits that can be performed.<a href="#blockalign" class="footnotelink">[1]</a>
  771.     </p>
  772.     <p>
  773.         For some formats that simply translate samples 1:1, such as A-law and μ-law, the block size is one sample
  774.         and no restrictions are necessary. Other formats, such as ADPCM, can have a block size as large as 2048 samples
  775.         (0.18s at 11KHz). The <a href="d-audiocompression.html">audio compression</a> dialog indicates the block size for
  776.         each selectable format.
  777.     </p>
  778.     <p>
  779.         VirtualDub does <em>not</em> attempt to adjust edits to match audio granularity because the
  780.         audio block size rarely corresponds to an integral number of video frames in time, which would require fractional
  781.         edits. The difference between the ideal cut point and the cut point imposed by audio compression appears as sync
  782.         error and thus editing a compressed audio stream should be avoided if possible.
  783.     </p>
  784.     <p>
  785.         Some compressed formats, particularly MPEG audio layer III, have additional decoding restrictions that are not
  786.         described adequately in the audio format structure, such as dependencies on previous frames, or even specify a
  787.         block size that is blatantly false (namely, one byte). Because VirtualDub is not able to detect or correct for
  788.         such limitations, editing streams in such formats can result in audible decoding errors due to block fragments
  789.         at the cut point and is not recommended.
  790.     </p>
  791.     <p class="footnote" id="blockalign">
  792.         [1] The size of the block is set, in bytes, by the <tt>nBlockAlign</tt> field in the <tt>WAVEFORMATEX</tt> structure that describes the audio format.
  793.     </p>
  794. </lina:create>
  795.  
  796. <lina:create file="p-smartrendering.html" title="Processing: Smart rendering">
  797.     <h2>What smart rendering does</h2>
  798.     <p>
  799.         Smart rendering attempts to identify which portions of a video stream must be re-encoded and which can be
  800.         copied verbatim from the source file. This can save a lot of time, as typically only the regions around
  801.         an edit must be re-encoded. It also preserves the quality of most of the non-edited video.
  802.     </p>
  803.     <p>
  804.         As an example, take this edit:
  805.     </p>
  806.     <style>
  807.         table.timeline {
  808.             margin-left: 32px;
  809.         }
  810.  
  811.         table.timeline th {
  812.             background: #8ae;
  813.         }
  814.  
  815.         table.timeline td {
  816.             background: #aea;
  817.             padding-right: 16px
  818.         }
  819.  
  820.         table.timeline td.cut {
  821.             background: #a88;
  822.         }
  823.         table.timeline td.broken {
  824.             background: #f00;
  825.         }
  826.     </style>
  827.     <table class="timeline"><tr>
  828.         <td>K</td>
  829.         <td> </td>
  830.         <td> </td>
  831.         <td> </td>
  832.         <td> </td>
  833.         <td class="cut">K</td>
  834.         <td class="cut"> </td>
  835.         <td class="cut"> </td>
  836.         <td class="cut"> </td>
  837.         <td class="cut"> </td>
  838.         <td class="cut">K</td>
  839.         <td class="cut"> </td>
  840.         <td class="broken"> </td>
  841.         <td class="broken"> </td>
  842.         <td class="broken"> </td>
  843.         <td>K</td>
  844.         <td> </td>
  845.         <td> </td>
  846.         <td> </td>
  847.         <td> </td>
  848.     </tr></table>
  849.     <p>
  850.         The red frames indicate frames which are meant to be kept, but cannot be preserved in their
  851.         original form because their dependencies have been removed. Without the prior frames, it is not
  852.         possible to decode those dangling frames before the next key frame. Ordinarily when
  853.         <a href="p-direct.html">direct stream copy mode</a> is used, VirtualDub would add the previous
  854.         two frames back into the output file to satisfy video compression restrictions.
  855.     </p>
  856.     <p>
  857.         Smart rendering re-encodes the affected frames instead. The result is that, in exchange for
  858.         a little degredation in those three frames, the edit occurs in the exact desired location and
  859.         the rest of the frames are left intact.
  860.     </p>
  861.     <h2>Requirements for smart rendering</h2>
  862.     <p>
  863.         To use smart rendering, the following are required:
  864.     </p>
  865.     <ul>
  866.         <li>The video must be compressed.</li>
  867.         <li>A video codec must be installed which can produce the same format as the source. Note that some
  868.             video codecs can decode more formats than they can encode, which means you may be able to open
  869.             a video file using a codec, and encode with that codec, but not encode to the same format as
  870.             the source.
  871.         </li>
  872.         <li>Inverse telecine must be disabled.</li>
  873.     </ul>
  874.     <p>
  875.         In addition, the video codec must be configured to match the source. There are often parameters in
  876.         the video codec's configuration dialog that VirtualDub cannot programmatically access, and which
  877.         may affect the encoding in incompatible ways. When in doubt, try to match the source; this includes
  878.         parameters such as B-frame encoding, packed bitstream, and color space. For instance, with Huffyuv,
  879.         the prediction mode must match.
  880.     </p>
  881.     <p>
  882.         If the video codec in use has an option for multi-pass rendering, it must be disabled for smart
  883.         rendering.
  884.     </p>
  885.     <h2>Filtering video while smart rendering</h2>
  886.     <p>
  887.         In order to use video filters while smart rendering is active, all video filters must be appropriately
  888.         scoped using opacity curves. Any frames for which any filters have an opacity above zero will be
  889.         forced to re-render.
  890.     </p>
  891.     <p>
  892.         Any video filter instance which does not have an opacity curve attached will force all frames to render,
  893.         since it must process all frames. Since filters which change the frame size cannot have opacity
  894.         curves attached, any size-changing in the filter list will defeat smart rendering.
  895.     </p>
  896.     <h2>Caveats of smart rendering</h2>
  897.     <p>
  898.         Not all video codecs will work with smart rendering, even if they normally work for regular encoding.
  899.         If you can encode two videos with the same video codec, join them together, and play back the result,
  900.         then smart rendering is more likely to work. This is usually not a problem with video compression
  901.         algorithms that do not use delta frames; Motion JPEG, for instance, should work without problems.
  902.     </p>
  903.     <p>
  904.         Quality at the join point may be an issue. The video codec is not aware that VirtualDub is using
  905.         it to smart-render transitions, so it may not be able to match quality very well with the frames
  906.         that are copied. This is especially an issue with short runs, since the codec may require a few
  907.         frames to "ramp up" in bitrate. If this occurs, consider increasing bitrate when using smart rendering.
  908.     </p>
  909.     <h2>Technical details</h2>
  910.     <p>
  911.         When smart rendering is active, VirtualDub tries to copy all the frames verbatim; whenever it
  912.         detects a violation in frame dependencies, it drops to recompressing frames, and continues to do
  913.         so until the next key frame, at which direct copying resumes. The recompression of the necessary
  914.         segments is done by "hot-starting" the video codec for each segment; from the video codec's standpoint,
  915.         each range to be recompressed is a separate video. The copied and re-encoded sections are then
  916.         seamlessly joined during the output process.
  917.     </p>
  918. </lina:create>
  919.  
  920. <lina:create file="p-displays.html" title="Processing: Display panes">
  921.     <p>
  922.         The <em>display panes</em> are the rectangular displays in which the input and output video are shown
  923.         when scrubbing over the timeline, previewing the output, or rendering to disk.
  924.     </p>
  925.  
  926.     <h2>Adjusting the display panes</h2>
  927.     <p>
  928.         Right-click on a display pane to bring up a context menu.
  929.     </p>
  930.  
  931.     <blockquote>
  932.         <lina:image src="pics/p-displaymenu.png"/>
  933.     </blockquote>
  934.  
  935.     <p>
  936.         This menu allows the adjustment of the size, aspect ratio, and filtering mode of each display pane.
  937.         All of these settings are purely for display purposes — none have any effect on the video
  938.         written to disk. This means that a video pane can be stretched 2:1 vertically to display a field-split
  939.         video at the correct aspect ratio without ill effects.
  940.     </p>
  941.     <p>
  942.         The size and aspect ratio can also be adjusted by dragging the bottom and right borders of the display
  943.         pane. If the aspect ratio is anything other than <em>free adjust</em>, the pane dimensions are constrained
  944.         to that aspect ratio during resizing; otherwise, both aspect ratio and size are adjusted during the
  945.         drag.
  946.     </p>
  947.     <p>
  948.         <em>Reset to exact size</em> sets the size and aspect ratio of the display pane so that each pixel in
  949.         the display pane corresponds to exactly one pixel in the video.
  950.     </p>
  951.     <p>
  952.         <em>Preferred filter</em> allows different stretch filters to be selected for aesthetic and performance
  953.         reasons. <em>Point</em> makes it easiest to spot individual pixels; <em>bicubic</em> is generally the
  954.         filter with the highest perceptual quality. The default display mode does not expose this option; one of
  955.         the 3D display drivers must be enabled in <em>Options > Preferences > Display</em>.
  956.         Enabling the OpenGL driver allows selection between point and bilinear, while the Direct3D9 driver also
  957.         allows selection of <em>bicubic</em> if the 3D video hardware is powerful enough.
  958.     </p>
  959.  
  960.     <h2>Display pane placement and enable/disable</h2>
  961.     <p>
  962.         By default, the input (source) pane is on the left, while the output (filtered) pane is on the right.
  963.         This ordering can be swapped through the <em>Options > Swap input/output panes</em> menu option.
  964.         A vertical formation can be used in place of the horizontal one by enabling <em>Options > Vertical display</em>.
  965.     </p>
  966.     <p>
  967.         The <em>Options > Display input video</em> and <em>Options > Display output video</em> menu
  968.         commands temporarily disable updating of either of the display panes, which can be advantageous for
  969.         performance. In particular, if the video filter chain contains filters which are expensive to run,
  970.         disabling the output pane can significantly speed up navigation through the timeline.
  971.     </p>
  972.  
  973.     <h2>Auto-fallback and auto-sparse</h2>
  974.     <p>
  975.         Whenever VirtualDub loses focus to another application, it automatically disables accelerated preview
  976.         for its display panes, falling back to Windows GDI for video display, in order to release system
  977.         resources. This results in a blockier display if VirtualDub needs to redraw itself. Also, display
  978.         updates are slower when GDI is in use, although this is not ordinarily a problem unless a preview
  979.         is running.
  980.     </p>
  981.     <p>
  982.         During a render-to-disk operation, VirtualDub intentionally sparses display updates so that they do not
  983.         occur faster than once per
  984.         processed frame, or every half second, whichever is less frequent. This keeps the display updates from consuming a significant
  985.         amount of CPU power. As a result, unless the video frame is very large and the processing rate relatively
  986.         low, it does not usually make much difference in render times whether the panes are enabled or not.
  987.     </p>
  988.  
  989.     <h2>Interlaced display</h2>
  990.     <p>
  991.         Selecting a field mode from <em>Options > Preview field mode</em> in the menu switches the display mode
  992.         for preview from frames to fields. This causes each frame to be updated twice on screen, one field at
  993.         a time, at twice the frame rate. Displaying a field at a time more closely mimics the way that analog
  994.         video is actually displayed and delivers smoother motion for video that was originally delivered in
  995.         analog format.
  996.     </p>
  997.     <p>
  998.         <em>Field order A</em> causes the top field (even scanlines) to be displayed first. <em>Field order B</em>
  999.         displays the bottom field (odd scanlines) to be displayed first. It is more common for capture devices
  1000.         to use field order B. Also, fo interlaced display to be effective, the video must be captured at full
  1001.         frame rate; capturing at less than full frame rate will result in an uneven sampling of fields in time.
  1002.     </p>
  1003.     <p>
  1004.         No adaptive deinterlacing is attempted during interlaced display, so a thin comb of scanlines will be
  1005.         visible in scenes with fast motion. Also, each field is scaled independently, so some artifacts will
  1006.         be seen when stretching the display panes vertically, and bilinear filtering will not be effective
  1007.         along that axis.
  1008.     </p>
  1009.  
  1010.     <h2>Tearing</h2>
  1011.     <p>
  1012.         During times of smooth motion, it may be possible to see a momentary rip in the video, where the
  1013.         top and bottom portions of the video do not update together. This happens when VirtualDub attempts to
  1014.         update the displayed frame while the screen itself is updating that portion, and is known as <em>tearing</em>.
  1015.         This effect is purely a display effect and does not imply a problem with the source video or any
  1016.         rendered output. It also only happens on video that is moving or changing; it is not visible on
  1017.         a static frame.
  1018.     </p>
  1019.     <p>
  1020.         Tearing can be mitigated or avoided under <em>Options > Preferences > Displays > Avoid tearing (enable vsync)</em>.
  1021.         This will cause VirtualDub to schedule display updates to be non-visible if possible. However, it only works
  1022.         with the DirectX (DirectDraw) and Direct3D display minidrivers, and can consume additional CPU when enabled.
  1023.         The anti-tearing code is automatically disabled during video capture and during renders to avoid consuming
  1024.         CPU during these lengthy operations.
  1025.     </p>
  1026.  
  1027. </lina:create>
  1028.  
  1029. <lina:create file="frameserver.html" title="Processing: Frameserver">
  1030.     <p>
  1031.         The <em>frameserver</em> feature allows other programs to pull video directly from VirtualDub's
  1032.         rendering pipeline. This allows video to be filtered through VirtualDub and then processed by another
  1033.         application without the need to write an intermediate file to disk.
  1034.     </p>
  1035.  
  1036.     <h2>Starting the frameserver</h2>
  1037.     <p>
  1038.         The frameserver is built into VirtualDub and is accessible through the <em>File > Start frameserver</em>
  1039.         menu command. This command starts a frameserver in the system with the currently loaded video and filtering
  1040.         settings. After the frameserver is started, other applications can connect to it.
  1041.     </p>
  1042.     <p>
  1043.         Not all features in VirtualDub work while the frameserver is active. The following processing
  1044.         features do work:
  1045.     </p>
  1046.     <ul>
  1047.         <li>Most video filters.</li>
  1048.         <li>Video frame rate adjustment.</li>
  1049.         <li>Video frame rate conversion.</li>
  1050.         <li>Range selection and the edit list.</li>
  1051.     </ul>
  1052.     <p>
  1053.         The following features are disabled when the frameserver is active:
  1054.     </p>
  1055.     <ul>
  1056.         <li>Video filters that have a lag — most notably the <em>temporal smoother</em>. The filter will
  1057.             function, but there will be a delay in the video.</li>
  1058.         <li>Video compression.</li>
  1059.         <li>Inverse telecine (3:2 pulldown removal).</li>
  1060.         <li>Audio compression.</li>
  1061.         <li>Audio filters.</li>
  1062.         <li>Audio conversion.</li>
  1063.         <li>Audio volume adjustment.</li>
  1064.         <li>Audio interleaving (most are not applicable).</li>
  1065.     </ul>
  1066.     <p>
  1067.         Video is always sent from the frameserver in 24-bit RGB format for maximum compatibility.
  1068.     </p>
  1069.     <p>
  1070.         When the frameserver is started, VirtualDub will ask you for a name to use for the new frameserver,
  1071.         as well as to save a <em>signpost</em> file. The name is used to distinguish frameservers on the system;
  1072.         the signpost file tells the client driver which frameserver to connect to. The signpost file, which
  1073.         normally uses the <tt>.vdr</tt> filename extension, is used as input to the client application and
  1074.         contains the frameserver name.
  1075.     </p>
  1076.     <lina:note>
  1077.         Although the frameserver name contains the name of the computer, connections across the network
  1078.         are not currently supported.
  1079.     </lina:note>
  1080.  
  1081.     <h2>Connecting a client application through the AVIFile driver</h2>
  1082.     <p>
  1083.         The best way to connect a client to VirtualDub's frameserver is through the <em>AVIFile driver</em>.
  1084.         AVIFile is a older programming API in Windows that allows programs to extract audio and video from
  1085.         media files, such as AVI. As it is extensible, VirtualDub ships with an AVIFile driver that extends
  1086.         such programs to read their data directly from the frameserver rather than from a file on disk.
  1087.     </p>
  1088.     <lina:note>
  1089.         It can often be difficult or impossible to tell whether an application uses the AVIFile APIs
  1090.         to read media files, and is thus compatible with this connection method; often the only way to
  1091.         tell is to try. However, this method is very similar to the connection method used by the <em>Avisynth</em>
  1092.         scriptable video processor, so applications which are Avisynth compatible will usually work
  1093.         with VirtualDub's frameserver as well.
  1094.     </lina:note>
  1095.     <p>
  1096.         To install the frameserver, use the <tt>auxsetup</tt> program that comes with VirtualDub. This will
  1097.         copy the driver to Windows' system folder and add entries to the Windows Registry to enable its use
  1098.         in AVIFile. This tool can also be used to remove the driver. On Windows NT/2000/XP, you must be running
  1099.         as a local administrator to install or uninstall the AVIFile driver.
  1100.     </p>
  1101.     <p>
  1102.         Once the AVIFile driver is installed, AVIFile-based applications should be able to connect to the
  1103.         frameserver simply by opening the <tt>.vdr</tt> file that was created when the frameserver was started.
  1104.         VirtualDub is itself capable of doing this, so opening a second instance is a way to test the frameserver
  1105.         connection.
  1106.     </p>
  1107.     <p>
  1108.         After an application is connected and has started pulling audio and video data, the activity totals on
  1109.         the frameserver dialog will increment as data is transferred.
  1110.     </p>
  1111.  
  1112.     <h2>Installing the AVIFile driver in proxy mode</h2>
  1113.     <p>
  1114.         Some applications use the AVIFile API are still not able to use the frameserver because they require
  1115.         the <tt>.avi</tt> filename extension or otherwise prevent non-AVI drivers from being used. In this case,
  1116.         enabling a special mode of the VirtualDub AVIFile driver called <em>proxy mode</em> can help. To do
  1117.         this, install the <tt>proxyon.reg</tt> file that comes with VirtualDub; this adds additional entries
  1118.         in the Windows Registry to remap the <tt>AVI</tt> entry as well. Use the <tt>proxyoff.reg</tt> file
  1119.         to undo this.
  1120.     </p>
  1121.     <lina:note>
  1122.         Proxy mode works by forcing all AVI files through VirtualDub's driver, which then attempts to proxy
  1123.         through all real AVI files to the regular Windows driver. Although attempts have been made to ensure
  1124.         this is as compatible as possible, there may occasionally be applications that do not work properly
  1125.         when proxy mode is enabled. It is recommended that proxy mode be enabled only when required to use
  1126.         the frameserver, and disabled in all other cases.
  1127.     </lina:note>
  1128.     <p>
  1129.         Once proxy mode has been enabled, renaming the <tt>.vdr</tt> signpost file to use the <tt>.avi</tt>
  1130.         filename extension will allow additional applications to function.
  1131.     </p>
  1132.     <p>
  1133.         As an additional bonus, when proxy mode is enabled, the AVIFile driver will tunnel through any
  1134.         file that begins with the nine characters <tt>#avisynth</tt> through to the <em>Avisynth</em>
  1135.         scriptable video processing tool. The additional compatibility unlocked by proxy mode is thus also
  1136.         extended to Avisynth.
  1137.     </p>
  1138.  
  1139.     <h2>Installing and using the 64-bit frameserver and frameclient</h2>
  1140.     <p>
  1141.         Use of the frameserver and frameclient with 64-bit programs, including the 64-bit version of VirtualDub,
  1142.         requires special procedures.
  1143.     </p>
  1144.     <p>
  1145.         The 32-bit version of VirtualDub, and the 32-bit frameserver/frameclient libraries, will work without
  1146.         modification under Windows x64 Edition. However, frameserving with 64-bit programs involved requires
  1147.         the 64-bit versions of the frameserver/frameclient libraries to be installed. Doing this currently
  1148.         requires manual steps:
  1149.     </p>
  1150.     <ul>
  1151.         <li>Copy <tt>vdsvrlnk64.dll</tt> and <tt>vdremote64.dll</tt> to the <tt>Windows\System32</tt> folder.</li>
  1152.         <li>Install the <tt>frameserver64.reg</tt> patch into the Registry.</li>
  1153.     </ul>
  1154.     <p>
  1155.         Once this is done, the 64-bit programs can interact with the frameserver system. This includes crossing
  1156.         data between 32-bit and 64-bit applications. In addition to frameserving between 64-bit applications, it
  1157.         is also possible to frameserve from 64-bit VirtualDub to a 32-bit application, as well as from 32-bit
  1158.         VirtualDub to a 64-bit application.
  1159.     </p>
  1160. </lina:create>
  1161.  
  1162. <lina:create file="p-filtering.html" title="Processing: Filtering video">
  1163.     <p>
  1164.         The ability to apply <em>video filters</em> to a video is one of VirtualDub's more powerful features.
  1165.         This allows application of a number of algorithms to improve the quality of a video, including
  1166.         noise reduction, blurring, sharpening, brightness/contrast, and gamma correction.
  1167.     </p>
  1168.  
  1169.     <h2>Using video filters</h2>
  1170.     <blockquote>
  1171.         <lina:image src="pics/d-videofilters.png"/>
  1172.     </blockquote>
  1173.     <p>
  1174.         The <em>Video > Filters...</em> menu command is the entry point into using the video
  1175.         filter system. Video filters in VirtualDub are arranged in a linear chain, such that the output
  1176.         of the first filter becomes the input of the second, the output of the second becomes the input
  1177.         of the third, and so on. Therefore, the order in which the video filters are listed is the order
  1178.         in which they are applied. By default, no filters are in this list, meaning that the video
  1179.         filter system is skipped entirely.
  1180.     </p>
  1181.     <p>
  1182.         The video processing mode must be set to <em>Full processing mode</em> for the video filter system
  1183.         to be enabled. If the video processing mode is set to anything else, the <em>Filters...</em> menu
  1184.         option is grayed and the video filter chain is disabled.
  1185.     </p>
  1186.     <p>
  1187.         For more information, see the documentation for the <a href="d-videofilters.html">video filters dialog</a>.
  1188.     </p>
  1189.  
  1190.     <h2>Common video processing operations</h2>
  1191.     <p>
  1192.         VirtualDub contains a number of internal video filters that assist in a number of common video
  1193.         processing tasks. Consult the <a href="video-filters.html">video filter reference</a> for full
  1194.         details, but here are some useful filter techniques:
  1195.         <ul>
  1196.             <li>
  1197.                 The <em>resize</em> filter will change video to a different resolution (size), in pixels. It can
  1198.                 also be used to letterbox a video by adding borders.
  1199.             </li>
  1200.             <li>
  1201.                 <em>Levels</em> is useful to adjust brightness and contrast in a video, particularly when blacks
  1202.                 are not truly black, or whites are not truly white.
  1203.             </li>
  1204.             <li>
  1205.                 You can crop at the beginning of any filter by selecting it and then the Crop button. If you don't
  1206.                 have any filters, though, just add <em>null transform</em> to give you a place to crop.
  1207.             </li>
  1208.             <li>
  1209.                 <em>Temporal smoother</em> can be effective at denoising a video. You will need to adjust the
  1210.                 threshold to set a balance between less noise and motion artifacts, however.
  1211.             </li>
  1212.             <li>
  1213.                 Use <em>chroma smoother</em> to correct for blocky color produced by video codecs that do not
  1214.                 interpolate color information properly.
  1215.             </li>
  1216.             <li>
  1217.                 <em>Rotate</em> a video by 90° increments until it is upright, or use the slower but more powerful
  1218.                 <em>rotate2</em> if the rotation is arbitrary.
  1219.             </li>
  1220.             <li>
  1221.                 When video shows keystoning from being displayed or shot off-center, try <em>perspective</em> to
  1222.                 map it back parallel to the screen.
  1223.             </li>
  1224.             <li>
  1225.                 Stamp a <em>logo</em> on video to mark it as yours.
  1226.             </li>
  1227.         </ul>
  1228.         <p>
  1229.             The order in which filters are applied can make a significant difference in performance and quality.
  1230.             In terms of performance, a smaller video frame is faster to process, so when down,
  1231.             try putting filters after the reduction, and when resizing up, prefer placing them before the enlargement.
  1232.             In terms of quality, blurring reduces noise, and sharpening amplifies it — so do your noise reduction
  1233.             early and your enhancement transforms late.
  1234.         </p>
  1235.     </p>
  1236.  
  1237.     <h2>External video filters</h2>
  1238.     <p>
  1239.         VirtualDub exposes an application programming interface (API) that allows video filters to be written
  1240.         as plugins, extending the video filtering capabilities of the program. Such plugins can include effect
  1241.         plugins that render on top of the video, such as adding an animated logo or titles, or add noise reduction,
  1242.         motion compensation, and deinterlacing capabilities.
  1243.     </p>
  1244.     <p>
  1245.         Video filters can be loaded on the spot by using the <em>Load...</em> button on the Add Filters dialog,
  1246.         but for filters that you use frequently, an easier way is to place them in the <em>plugins</em> folder
  1247.         inside the VirtualDub program directory. Any <tt>.vdf</tt> files in this folder are automatically loaded
  1248.         on startup, and the plugins within added to the available list. Note that VirtualDub does not currently
  1249.         support video filters written to a standard other than its own API.
  1250.     </p>
  1251.     <p>
  1252.         Check the <a href="http://www.virtualdub.org/">VirtualDub
  1253.         website</a> for downloadable documentation and C++ header files for writing your own video filter.
  1254.     </p>
  1255. </lina:create>
  1256.  
  1257. <lina:create file="p-audiodisplay.html" title="Processing: Audio display">
  1258.     <p>
  1259.         The audio display in VirtualDub displays a visualization of the audio track for spotting errant sounds and
  1260.         good editing points.
  1261.     </p>
  1262.     <lina:note>
  1263.         Currently, compressed audio streams cannot be displayed — only uncompressed (PCM) audio can be
  1264.         shown. An error will be displayed if the display is opened with a compressed audio stream.
  1265.     </lina:note>
  1266.     <h2>Opening the audio display</h2>
  1267.     <p>
  1268.         Select <em>View > Audio Display</em> from the menu to open the audio display. By default, the
  1269.         display opens in waveform mode, showing the sound wave from the audio track.
  1270.     </p>
  1271.     <blockquote>
  1272.         <lina:image src="pics/p-mainui-audiodisplay-waveform.png" width="403" height="109" />
  1273.     </blockquote>
  1274.     <p>
  1275.         A waveform is shown for each channel in the audio track. The red line indicates the speaker position for
  1276.         each channel over time; it oscillates back and forth across the green centerline for normal sound, and
  1277.         a steady line that doesn't oscillate indicates quiet. The frame numbers are displayed at the bottom, and
  1278.         the gray lines next to them indicate the start of the video frame in time. The area highlighted in dark
  1279.         blue corresponds to the time during which the video frame is displayed.
  1280.     </p>
  1281.     <p>
  1282.         The horizontal time scale can be changed by right-clicking on the display and selecting the <em>Zoom in</em>
  1283.         or <em>Zoom out</em> option from the resulting context menu. Zoom in to see the waveform in greater time
  1284.         resolution, and zoom out to see more of the waveform over time in the display.
  1285.     </p>
  1286.     
  1287.     <h2>Spectrogram mode</h2>
  1288.     <p>
  1289.         Right-click on the audio display to access the context menu, and you can switch the audio display
  1290.         to <i>spectrogram mode</i>. Although spectogram mode is slower to update than waveform mode, it is
  1291.         generally a more useful way to visualize a sound track.
  1292.     </p>
  1293.     <blockquote>
  1294.         <lina:image src="pics/p-mainui-audiodisplay-spectrogram.jpeg" width="497" height="134" />
  1295.     </blockquote>
  1296.     <p>
  1297.         Spectrogram mode is different from waveform mode in that it shows frequency over time instead of amplitude.
  1298.         The frequency scale is shown on the left side, and the
  1299.         graph indicates the intensity of sound at each frequency. The higher the mark, the higher the frequency,
  1300.         and the brighter the mark, the louder the sound.
  1301.     </p>
  1302.     <p>
  1303.         Keep in mind that a sound rarely shows up as a single, sharp blip — in practice, you will see a set of
  1304.         lines moving in parallel due to the <i>harmonics</i> of the sound, and for noise-like sounds, the image
  1305.         will show static. Constant horizontal lines indicate pure tones; if you see one low in the graph, it may
  1306.         be 50Hz or 60Hz power line hum leaking into the audio signal, indicating a possible grounding problem
  1307.         in your audio setup (a common problem).
  1308.     </p>
  1309.     <p>
  1310.         If the sound track is low in volume, the graph may be somewhat dim and difficult to see. The <em>Spectral Boost</em>
  1311.         option in the right-click context menu allows the signal to be amplified, increasing the brightness of the
  1312.         graph.
  1313.     </p>
  1314.     
  1315.     <h2>Selecting frames</h2>
  1316.     <p>
  1317.         You can select video frames in the audio display by clicking with the left mouse button, similarly to how
  1318.         you can select a range by using the mark-in/out buttons on the position control.
  1319.     </p>
  1320.     <ul>
  1321.         <li>Hold down the Shift key and drag with the left mouse button to set the selection.</li>
  1322.         <li>The selection is displayed in light blue at the bottom of the display.</li>
  1323.         <li>To avoid clicks and pops when editing, choose endpoints where the sound is quietest.
  1324.             It is usually best to get as close as possible to a <i>zero crossing</i> where the waveform
  1325.             crosses the centerline. This is often difficult with multiple channels and only being able to cut on
  1326.             frame boundaries, but fortunately, you don't need a perfect cut for the jump to be inaudible.</li>
  1327.     </ul>
  1328.     
  1329.     <h2>Shifting audio</h2>
  1330.     <p>
  1331.         You can also shift the audio track back and forth from the audio display to fix audio sync errors.
  1332.     </p>
  1333.     <ul>
  1334.         <li>Identify a portion of the video clip where both the video frame and the audio waveform/spectrogram are
  1335.             distinctive.</li>
  1336.         <li>Hold down the Control key and click with the left mouse button on a portion of audio.</li>
  1337.         <li>Drag horizontally to when the audio should play.</li>
  1338.         <li>The audio display will now update with the new offset.</li>
  1339.     </ul>
  1340.     <p>
  1341.         This changes the same setting as the <i>audio displacement</i> field of the <a href="d-audiointerleaving.html">Audio interleaving</a>
  1342.         dialog.
  1343.     </p>
  1344. </lina:create>
  1345.  
  1346. <lina:create file="p-filtercurves.html" title="Processing: Video filter curves">
  1347.     <p>
  1348.         Video filter curves allow you to fade a video filter's output with its input, thus allowing filter strength
  1349.         to vary over the course of a video.
  1350.     </p>
  1351.     <h2>Attaching an opacity curve to a video filter</h2>
  1352.     <p>
  1353.         In the <a href="d-videofilters.html">video filters dialog</a>, select the filter instance whose output you
  1354.         wish to fade, and activate the Blend button. The mark <tt>[B]</tt> will appear before the filter's name,
  1355.         indicating that an opacity curve has been attached. Then close the video filters dialog.
  1356.     </p>
  1357.     <p>
  1358.         In the main editor, select <em>View > Curve editor</em> from the menu, and select the video filter instance
  1359.         from the combo box that appears. The curve editor will then be displayed for that filter instance's opacity
  1360.         curve.
  1361.     </p>
  1362.     <h2>Editing curves</h2>
  1363.     <blockquote>
  1364.         <lina:image src="pics/p-mainui-curveedit.png" width="424" height="122" />
  1365.     </blockquote>
  1366.     <p>
  1367.         Select <em>View > Curve Editor</em> to bring up the curve editor. The combo box drop-down at the top
  1368.         of the editor allows any of the opacity curves of blended filters to be selected. The curve being edited is
  1369.         displayed in the pane, with the horizontal axis representing frames and the vertical axis representing opacity.
  1370.     </p>
  1371.     <ul>
  1372.         <li>
  1373.             <b>To create or add points to the curve</b>, hold down the Shift key and click with the left mouse button to create
  1374.             points in the editor.
  1375.         </li>
  1376.         
  1377.         <li>
  1378.             <b>To edit the curve</b>, click with the left mouse button on a point and drag to the desired location. Raise
  1379.             points higher to make the filter's output more opaque, and lower to make it more translucent.
  1380.         </li>
  1381.         
  1382.         <li>
  1383.             <b>To delete curve points</b>, hold down the Control (Ctrl) key, and left-click on the points to be deleted.
  1384.         </li>
  1385.         
  1386.         <li>
  1387.             <b>To make a curve segment into a line, or vice versa</b>, hold down the Shift key and click on the segment with
  1388.             the right mouse button.
  1389.         </li>
  1390.     </ul>
  1391.     <h2>Effects of using opacity curves</h2>
  1392.     <p>
  1393.         Using an opacity curve will slow down video processing slightly for any transition regions where the curve value is midway
  1394.         between zero (transparent) and one (opaque), thus requiring a blend. VirtualDub optimizes processing for the cases
  1395.         where the curve specifies either fully transparent or opaque operation, however, in which case the blend operation is
  1396.         omitted or the filter is skipped entirely.
  1397.     </p>
  1398.     <p>
  1399.         Opacity curves are essential when using video filters with <a href="p-smartrendering.html">smart rendering</a>.
  1400.         VirtualDub can only copy video frames wherever the opacity curve completely fades out the video filter's output; anywhere
  1401.         the curve partially or fully blends in the video filter, smart rendering is disabled and video frames must be processed
  1402.         and recompressed. By using the opacity curve to narrow the video filter's operation, however, it is possible to filter
  1403.         only a select set of video frames and leave the rest untouched.
  1404.     </p>
  1405. </lina:create>
  1406.  
  1407. <lina:create file="p-artifacts.html" title="Processing: Video artifacts">
  1408.     <p>
  1409.         <em>Artifacts</em>, or undesirable errors, invariably creep into video. If you are working with analog
  1410.         video or with video compression, some artifacting is inevitable. Knowing different types of artifacts
  1411.         and their causes can help you determine which are due to shortcomings in hardware and software, deficiencies
  1412.         in your video process, or even software (or hardware!) bugs.
  1413.     </p>
  1414.     <p>
  1415.         A few artifacts and their causes are listed below. This is not meant to be an exhaustive list of artifacts
  1416.         you may encounter, but it should cover the common ones. 
  1417.     </p>
  1418.     <h2>Quilting (Compression artifacts)</h2>
  1419.     <blockquote>
  1420.         <img src="pics/artifact-compression.jpeg"/>
  1421.         <lina:image src="pics/artifact-compression.jpeg" width=128 height=128 />
  1422.     </blockquote>
  1423.     <p>
  1424.         <em>Quilting</em> results from high levels of compression on an image that cause warbling and
  1425.         edge artifacts to appear in the output. The term "quilting" refers to the fact that video
  1426.         compression is usually done in blocks of 8x8 or 16x16 pixels, so if the compression factor
  1427.         is set very high such that the blocks don't match well, the result looks like a quilt. The
  1428.         warbles around sharp edges are result of discarding detail from the image for higher compression.
  1429.         In other words, it's not that warbles were added, but that the detail which would sharpen the
  1430.         edge and flatten the area around it has been dropped.
  1431.     </p>
  1432.     <p>
  1433.         Advanced video compression algorithms, particularly those based on the MPEG-4 video standard,
  1434.         have <em>post-processing filters</em> designed to reduce these artifacts, which can give the
  1435.         video a smeared and cartoony look that is less objectionable.
  1436.     </p>
  1437.     <p>
  1438.         To reduce quilting artifacts:
  1439.     </p>
  1440.     <ul>
  1441.         <li>Use more advanced video compression formats.</li>
  1442.         <li>Compress less — use more bitrate and produce larger video files.</li>
  1443.         <li>Use multi-pass compression if available, to better distribute bits to where they are needed.</li>
  1444.     </ul>
  1445.  
  1446.     <h2>Combing (interlacing artifacts)</h2>
  1447.     <blockquote>
  1448.         <img src="pics/artifact-interlacing.png"/>
  1449.         <lina:image src="pics/artifact-interlacing.png" width=128 height=128 />
  1450.     </blockquote>
  1451.     <p>
  1452.         Analog video is delivered using a mechanism known as <em>interlacing</em> to reduce flicker. Instead
  1453.         of sending entire frames at 29.97 frames per second (25 for PAL/SECAM), the video is sent in halves called
  1454.         <em>fields</em>, at 59.94 fields per second (50 for PAL/SECAM). These fields are <i>interlaced</i>
  1455.         together such that a frame is composed of alternating lines from each field; the even lines make up
  1456.         the <em>even field</em> and the odd lines make up the <em>odd field</em>. The result is high resolution
  1457.         in static scenes and smoother motion in fast-moving scenes, with less flicker and without requiring
  1458.         more bandwidth.
  1459.     </p>
  1460.     <p>
  1461.         The catch with interlacing is that you can't have both higher resolution and smoother motion at the same
  1462.         time, so artifacts appear whenever you try to extract both. The process of removing the interlacing and displaying the result non-interlaced is known as <em>deinterlacing</em>.
  1463.         Displaying each field by itself gives smoother motion at the cost of resolution and is known as <em>bob deinterlacing</em>.
  1464.         Pairing fields up and displaying them together as frames gives higher resolution in exchange for smeared
  1465.         motion and combing artifacts and is called <em>weave deinterlacing</em>. Both produce frames at field rate
  1466.         (59.94 or 50 fps). Trying to switch between the two
  1467.         on a per-frame or even per-area basis depending on the amount of local motion is <em>adaptive deinterlacing</em>
  1468.         and can produce an even higher quality image.
  1469.     </p>
  1470.     <p>
  1471.         Most video capture devices do not attempt to deinterlace and simply pair fields together, which is similar
  1472.         to weave deinterlacing except that it gives half the field rate (29.97 or 25). If the video was produced originally
  1473.         from full frames at that rate, this has a 50/50 chance of producing whole frames instead of a combed mess.
  1474.         There is no requirement that this be the case, though, and since the alternating fields are evenly staggered in
  1475.         time they usually aren't. In that case there is no "correct" way to deinterlace the video, and different deinterlacing
  1476.         techniques must be tried to produce the best quality non-interlaced video.
  1477.     </p>
  1478.     <p>
  1479.         Material derived from 24 fps film is a special case in that the video is sourced from whole frames and split into
  1480.         fields in a specific pattern; this is called <em>telecine</em>. In NTSC, this is done by slowing the video down very
  1481.         slightly and combining fields in a 3:2 pattern; VirtualDub's inverse telecine feature, accessible in the <a href="d-videoframerate.html">video frame rate control dialog</a>,
  1482.         can sometimes undo this pattern. In the case of PAL, the video is usually just sped up by 4% from 24 fps to 25 fps,
  1483.         so the most that is usually required is a single-field delay to pair up the fields correctly. 
  1484.     </p>
  1485.  
  1486.     <h2>Banding (quantization artifacts)</h2>
  1487.     <blockquote>
  1488.         <img src="pics/artifact-banding.png"/>
  1489.         <lina:image src="pics/artifact-banding.png" width=128 height=128 />
  1490.     </blockquote>
  1491.     <p>
  1492.         <em>Banding</em> occurs when the bit depth used to represent pixels in an image is too low;
  1493.         the result is stairstepping in the image as pixels are forced to hop between colors that
  1494.         are far enough apart to distinguish visually. This is most visible in large, shallow gradients,
  1495.         which become bands of solid color.
  1496.     </p>
  1497.     <p>
  1498.         When banding is observed, you should first check the display settings for your system to ensure
  1499.         that the display is set to 24-bit color or 32-bit color, which will produce the least banding.
  1500.         In particular, selecting a 15-bit or 16-bit display mode will introduce banding on screen that
  1501.         may not be present in the actual video.
  1502.     </p>
  1503.     <p>
  1504.         Selecting 15-bit RGB or 16-bit RGB as a processing format will introduce noticeable banding into
  1505.         an image, so these formats should generally be avoided. It is still possible to see banding with
  1506.         YCbCr formats or 24/32-bit RGB if the gradient is very shallow and over a large area; using
  1507.         higher-precision formats or dithering can alleviate this. Note that VirtualDub does not currently
  1508.         support a format that has greater than 8 bits of precision per channel (256 levels).
  1509.     </p>
  1510.  
  1511.     <h2>Scaling artifacts</h2>
  1512.     <blockquote>
  1513.         <img src="pics/artifact-scaling.png"/>
  1514.         <lina:image src="pics/artifact-scaling.png" width=128 height=128 />
  1515.     </blockquote>
  1516.     <p>
  1517.         Rough and slightly blocky edges may be indicative of a poor scaling algorithm being used to
  1518.         resize video. In particular, use of a <em>nearest neighbor</em> or <em>point sampling</em>
  1519.         algorithm can give a blocky look to video due to the lack of interpolation ("smooth" stretching)
  1520.         during the resize, which means that rows and columns are just duplicated or deleted instead of
  1521.         being blended to modify the video's size. The result is that thin creases appear in the image.
  1522.     </p>
  1523.     <p>
  1524.         A bad resize operation is difficult to undo after the fact if you no longer have the source, but
  1525.         if you can redo the bad operation, try moving any scaling operations later in the process so
  1526.         they can be done using VirtualDub's high-quality <em>resize</em> filter, with a bilinear or bicubic filter.
  1527.         For instance, if you are attempting to capture analog video at a 480x360 resolution, try using
  1528.         640x480 or 640x576 — something closer to the native resolution — and then scaling
  1529.         in post-processing. This will often take more CPU power and storage, however.
  1530.     </p>
  1531.  
  1532.     <h2>Rainbows (pitch/stride errors)</h2>
  1533.     <blockquote>
  1534.         <img src="pics/artifact-rainbow.png"/>
  1535.         <lina:image src="pics/artifact-rainbow.png" width=128 height=128 />
  1536.     </blockquote>
  1537.     <p>
  1538.         A regular slant to a decoded image with rainbows across scanlines is usually indicative of a
  1539.         buggy video codec that does not compute <em>pitch</em> or <em>stride</em> correctly. The technical
  1540.         reason for this is that padding at the end of each horizontal row is not being accounted
  1541.         for correctly, resulting in each row being progressively further off. This isn't that important
  1542.         to diagnose the problem, though.
  1543.     </p>
  1544.     <p>
  1545.         The key to fixing the problem is that multiples of <em>four pixels</em> in width usually
  1546.         work around this bug, because in that case the row-end correction is unnecessary. If attempting
  1547.         to compress with a video codec gives striped results when using widths like 321, 639, etc. but
  1548.         316, 320, 324, 636, 640, 644... work, then you are experiencing this issue.
  1549.     </p>
  1550. </lina:create>